package com.yfp.device.service;

import com.yfp.device.domain.OrderCombo;
import com.yfp.device.domain.R;
import com.yfp.device.domain.dto.OrderCreateDTO;
import com.yfp.device.domain.dto.UploadWorkOrderRequest;
import com.yfp.device.domain.vo.DeviceActionStatusMakeVO;
import com.yfp.device.domain.vo.DeviceComboPreOrderStatusVO;
import com.yfp.device.domain.vo.OrderCreateVO;

import java.util.List;

public interface OrderService {

    /**
     * 生成订单数据
     *
     * @return 响应体
     */
    R<?> genOrderData(String dateString, Integer days);

    /**
     * 上传工单
     *
     * @param request 请求体
     * @return 响应体
     */
    R<?> uploadWorkOrder(UploadWorkOrderRequest request);

    /**
     * 设备下单发起制作
     *
     * @param orderCombo
     * @return
     */
    R<DeviceActionStatusMakeVO> deviceActionStatusMake(OrderCombo orderCombo);

    /**
     * 查询订单支付状态
     *
     * @param preOrderId
     * @return
     */
    R<DeviceComboPreOrderStatusVO> getDeviceComboPreOrderStatus(String preOrderId);

    /**
     * 获取预支付订单（设备拉起支付操作）
     *
     * @param orderCreateDTO
     * @return
     */
    OrderCreateVO deviceComboPreOrderCreate(OrderCreateDTO orderCreateDTO);

    /**
     * 获取预支付订单（设备拉起支付操作）
     *
     * @param userAgent
     * @param sessionId
     * @return
     */
    String payChanelApply(String userAgent, String sessionId);

    /**
     * 修改订单状态
     *
     * @param orderDetailIds
     */
    void updateOrderStatus(List<String> orderDetailIds);

    /**
     * 微信订阅消息
     *
     * @param request
     */
    void wxNotify(UploadWorkOrderRequest request);
}
